সি শার্প (C#) প্রোগ্রামিংয়ের দুটি গুরুত্বপূর্ণ ধারণা হলো ইনহেরিটেন্স এবং পলিমরফিজম। ইনহেরিটেন্সের মাধ্যমে কোডের পুনরায় ব্যবহারযোগ্যতা বৃদ্ধি করা যায়, আর পলিমরফিজম একই ফাংশনের বিভিন্ন রূপ প্রকাশ করতে সহায়ক। এই দুটি ধারণা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর ভিত্তি গঠন করে।
ইনহেরিটেন্স হলো এমন একটি প্রক্রিয়া, যার মাধ্যমে একটি ক্লাস অন্য একটি ক্লাসের বৈশিষ্ট্য এবং মেথড উত্তরাধিকারী হিসেবে পায়। ইনহেরিটেন্সের মাধ্যমে ক্লাসের মধ্যে সম্পর্ক তৈরি করা হয়, এবং একবার কোনো বেস (parent) ক্লাসে বৈশিষ্ট্য সংজ্ঞায়িত করলে তা ডেরাইভড (child) ক্লাসে পুনরায় ব্যবহার করা যায়।
// বেস ক্লাস
public class Animal
{
public void Eat()
{
Console.WriteLine("Eating...");
}
}
// ডেরাইভড ক্লাস
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Barking...");
}
}
এখানে, Dog
ক্লাস Animal
ক্লাস থেকে ইনহেরিট করেছে, যার ফলে Dog
ক্লাসে Eat()
মেথড এবং Bark()
মেথড উভয়ই অ্যাক্সেসযোগ্য।
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.Eat(); // Output: Eating...
dog.Bark(); // Output: Barking...
}
}
পলিমরফিজম হলো এমন একটি প্রক্রিয়া যার মাধ্যমে একই মেথড বা অপারেশনের বিভিন্ন রূপ প্রকাশ করা সম্ভব হয়। পলিমরফিজমের মাধ্যমে প্রোগ্রামিং আরও শক্তিশালী ও নমনীয় হয়। এটি মূলত দুটি ধরণের হতে পারে:
মেথড ওভারলোডিং হলো একই নামের একাধিক মেথড সংজ্ঞায়িত করা, তবে তাদের প্যারামিটারের সংখ্যা বা টাইপ ভিন্ন হয়। এটি কম্পাইল টাইমে কাজ করে, তাই একে স্ট্যাটিক পলিমরফিজমও বলা হয়।
public class MathOperations
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
মেথড ওভাররাইডিং হলো বেস ক্লাসের মেথড ডেরাইভড ক্লাসে পুনরায় সংজ্ঞায়িত করা। বেস ক্লাসের মেথড virtual
দিয়ে চিহ্নিত করা হয় এবং ডেরাইভড ক্লাসে override
কীওয়ার্ড দিয়ে সেটি ওভাররাইড করা হয়। এটি রানটাইমে কাজ করে, তাই একে ডায়নামিক পলিমরফিজম বলা হয়।
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal();
myAnimal.MakeSound(); // Output: Animal makes a sound
Animal myDog = new Dog();
myDog.MakeSound(); // Output: Dog barks
}
}
ইনহেরিটেন্স এবং পলিমরফিজম একত্রে ব্যবহার করে কোডের পুনরায় ব্যবহারযোগ্যতা এবং কার্যকারিতা বৃদ্ধি করা যায়। বেস ক্লাসে সাধারণ মেথড এবং প্রোপার্টি সংজ্ঞায়িত করে ডেরাইভড ক্লাসগুলোতে সেই মেথড ওভাররাইড করে বিভিন্ন রূপ প্রকাশ করা সম্ভব।
csharp
Copy code
public abstract class Shape
{
public abstract double GetArea();
}
public class Circle : Shape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
public override double GetArea()
{
return Math.PI * radius * radius;
}
}
public class Rectangle : Shape
{
private double width;
private double height;
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
public override double GetArea()
{
return width * height;
}
}
class Program
{
static void Main(string[] args)
{
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(4, 6);
Console.WriteLine("Circle Area: " + circle.GetArea()); // Output: Circle Area: 78.54
Console.WriteLine("Rectangle Area: " + rectangle.GetArea()); // Output: Rectangle Area: 24
}
}
Circle Area: 78.54
Rectangle Area: 24
ইনহেরিটেন্স এবং পলিমরফিজম একত্রে ব্যবহার করে শক্তিশালী এবং নমনীয় প্রোগ্রামিং কাঠামো তৈরি করা সম্ভব হয়, যা কোডকে আরও কার্যকর এবং গঠনমূলক করে।
ইনহেরিটেন্স (Inheritance) হলো অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর একটি মূল বৈশিষ্ট্য, যা একটি ক্লাসকে অন্য একটি ক্লাস থেকে বৈশিষ্ট্য এবং আচরণ (ফিল্ড ও মেথড) গ্রহণ করতে সক্ষম করে। ইনহেরিটেন্সের মাধ্যমে একটি ক্লাসের সব ফিচার অন্য একটি ক্লাসে পুনরায় ব্যবহার করা যায়, যা কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণ, এবং মডুলারাইজেশন সহজ করে।
ইনহেরিটেন্সে মূলত দুটি ধরনের ক্লাস থাকে:
সি শার্পে ইনহেরিটেন্স ব্যবহার করতে :
চিহ্ন দিয়ে ডেরাইভড ক্লাসকে বেস ক্লাস থেকে ইনহেরিট করা হয়।
class বেস_ক্লাস
{
// ফিল্ড এবং মেথড
}
class ডেরাইভড_ক্লাস : বেস_ক্লাস
{
// নতুন বৈশিষ্ট্য এবং মেথড যোগ করা যায়
}
নিচে একটি উদাহরণ দেওয়া হলো যেখানে Animal
ক্লাসকে ইনহেরিট করে Dog
ক্লাস তৈরি করা হয়েছে।
using System;
// বেস ক্লাস
class Animal
{
public void Eat()
{
Console.WriteLine("Eating...");
}
}
// ডেরাইভড ক্লাস
class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Barking...");
}
}
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.Eat(); // বেস ক্লাস Animal থেকে ইনহেরিট করা মেথড
dog.Bark(); // ডেরাইভড ক্লাস Dog এর নিজস্ব মেথড
}
}
Eating...
Barking...
এখানে Dog
ক্লাস Animal
ক্লাস থেকে ইনহেরিট করেছে। ফলে Dog
ক্লাসের অবজেক্ট dog
দিয়ে Eat
এবং Bark
উভয় মেথড কল করা সম্ভব হয়েছে।
ইনহেরিটেন্সের মাধ্যমে প্রোগ্রামে কোডের পুনঃব্যবহারযোগ্যতা এবং দক্ষতা বৃদ্ধি করা যায়। এটি ব্যবহারের কিছু প্রধান কারণ নিচে আলোচনা করা হলো:
কোড পুনঃব্যবহারযোগ্যতা: ইনহেরিটেন্সের মাধ্যমে একবার লেখা কোড পুনরায় ব্যবহার করা যায়, যা কোডের পুনরাবৃত্তি কমায়। উদাহরণস্বরূপ, একটি সাধারণ বৈশিষ্ট্য বা মেথড একাধিক ক্লাসে প্রয়োজন হলে বেস ক্লাসে রেখে তা ইনহেরিট করা যায়।
সহজ রক্ষণাবেক্ষণ: এক জায়গায় পরিবর্তন করলে সব ডেরাইভড ক্লাসে তার প্রভাব পড়ে, ফলে কোড রক্ষণাবেক্ষণ সহজ হয়।
মডুলারাইজেশন: ইনহেরিটেন্সের মাধ্যমে প্রোগ্রামকে ছোট ছোট মডিউলে ভাগ করা যায়, যা প্রোগ্রামিং এবং ডিবাগিং সহজ করে।
ইন্টারফেস ও পলিমরফিজম: ইনহেরিটেন্সের মাধ্যমে পলিমরফিজম (Polymorphism) ব্যবহার করা যায়, যার মাধ্যমে একই ধরনের কাজ বিভিন্ন ভাবে করা সম্ভব হয়।
// বেস ক্লাস
class Vehicle
{
public void StartEngine()
{
Console.WriteLine("Engine started.");
}
}
// ডেরাইভড ক্লাস
class Car : Vehicle
{
public void Drive()
{
Console.WriteLine("Driving...");
}
}
class Bike : Vehicle
{
public void Ride()
{
Console.WriteLine("Riding...");
}
}
class Program
{
static void Main(string[] args)
{
Car car = new Car();
car.StartEngine(); // ইনহেরিট করা মেথড
car.Drive(); // Car এর নিজস্ব মেথড
Bike bike = new Bike();
bike.StartEngine(); // ইনহেরিট করা মেথড
bike.Ride(); // Bike এর নিজস্ব মেথড
}
}
Engine started.
Driving...
Engine started.
Riding...
এখানে Car
এবং Bike
উভয় ক্লাস Vehicle
ক্লাস থেকে StartEngine
মেথড ইনহেরিট করেছে, ফলে একই মেথড একাধিকবার না লিখেই ব্যবহার করা সম্ভব হয়েছে।
ইনহেরিটেন্স সি শার্পে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা কোডের পুনঃব্যবহারযোগ্যতা, মডুলারাইজেশন এবং রক্ষণাবেক্ষণ সহজ করে। ইনহেরিটেন্স ব্যবহার করে কোডকে আরও সংগঠিত ও কার্যকরভাবে সাজানো যায় এবং পলিমরফিজম ও ইন্টারফেসের সুবিধা নেওয়া যায়।
সি শার্পে (C#) বেস ক্লাস এবং ডেরাইভড ক্লাস ইনহেরিটেন্সের মাধ্যমে সম্পর্কিত থাকে। বেস ক্লাস হলো মূল ক্লাস, যেখান থেকে ডেরাইভড ক্লাস বৈশিষ্ট্য এবং মেথড উত্তরাধিকারী হিসেবে গ্রহণ করে। ইনহেরিটেন্সের মাধ্যমে বেস ক্লাসের সাধারণ বৈশিষ্ট্যগুলো বিভিন্ন ডেরাইভড ক্লাসে ব্যবহার করা যায়, যা কোড রিইউজ এবং সরলতা নিশ্চিত করে।
বেস ক্লাস হলো এমন একটি ক্লাস যা ডেরাইভড ক্লাসের জন্য একটি ব্লুপ্রিন্ট হিসেবে কাজ করে। ডেরাইভড ক্লাস ইনহেরিটেন্সের মাধ্যমে বেস ক্লাসের বৈশিষ্ট্য (প্রোপার্টি এবং মেথড) গ্রহণ করতে পারে। বেস ক্লাসকে parent class
বা super class
ও বলা হয়।
public class Animal
{
public string Name;
public void Eat()
{
Console.WriteLine("Eating...");
}
}
উপরের উদাহরণে, Animal
হলো বেস ক্লাস, যেখানে Name
প্রোপার্টি এবং Eat()
মেথড রয়েছে।
ডেরাইভড ক্লাস হলো এমন একটি ক্লাস, যা বেস ক্লাসের বৈশিষ্ট্য এবং মেথডগুলো ইনহেরিট করে। ডেরাইভড ক্লাসে নতুন বৈশিষ্ট্য এবং মেথডও যুক্ত করা যায়, যা শুধুমাত্র সেই ডেরাইভড ক্লাসের জন্য প্রযোজ্য। ডেরাইভড ক্লাসকে child class
বা sub class
ও বলা হয়।
ডেরাইভড ক্লাস তৈরি করার জন্য C# এ :
চিহ্ন ব্যবহার করে বেস ক্লাসের সাথে সম্পর্ক স্থাপন করা হয়।
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Barking...");
}
}
এখানে Dog
হলো ডেরাইভড ক্লাস, যা Animal
বেস ক্লাস থেকে ইনহেরিট করেছে। ফলে Dog
ক্লাসে Eat()
মেথড এবং Name
প্রোপার্টি অ্যাক্সেসযোগ্য।
using System;
namespace InheritanceExample
{
// বেস ক্লাস
public class Animal
{
public string Name;
public void Eat()
{
Console.WriteLine(Name + " is eating...");
}
}
// ডেরাইভড ক্লাস
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine(Name + " is barking...");
}
}
public class Cat : Animal
{
public void Meow()
{
Console.WriteLine(Name + " is meowing...");
}
}
class Program
{
static void Main(string[] args)
{
// Dog অবজেক্ট তৈরি এবং বৈশিষ্ট্য ব্যবহার
Dog dog = new Dog();
dog.Name = "Buddy";
dog.Eat(); // Output: Buddy is eating...
dog.Bark(); // Output: Buddy is barking...
// Cat অবজেক্ট তৈরি এবং বৈশিষ্ট্য ব্যবহার
Cat cat = new Cat();
cat.Name = "Whiskers";
cat.Eat(); // Output: Whiskers is eating...
cat.Meow(); // Output: Whiskers is meowing...
}
}
}
Buddy is eating...
Buddy is barking...
Whiskers is eating...
Whiskers is meowing...
ডেরাইভড ক্লাসে বেস ক্লাসের মেথড ওভাররাইড করার জন্য override
কীওয়ার্ড ব্যবহার করা হয়। এজন্য বেস ক্লাসের মেথড virtual
হিসেবে ঘোষণা করতে হয় এবং ডেরাইভড ক্লাসে ওভাররাইড করা হয়।
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
এখানে Dog
ক্লাসে MakeSound()
মেথড ওভাররাইড করা হয়েছে।
class Program
{
static void Main(string[] args)
{
Animal animal = new Animal();
animal.MakeSound(); // Output: Animal makes a sound
Dog dog = new Dog();
dog.MakeSound(); // Output: Dog barks
}
}
সি শার্পে বেস ক্লাস হলো মূল ক্লাস, যেখানে সাধারণ বৈশিষ্ট্য ও মেথড থাকে, এবং ডেরাইভড ক্লাস সেই বৈশিষ্ট্য ও মেথড উত্তরাধিকারী হিসেবে গ্রহণ করে। ইনহেরিটেন্সের মাধ্যমে কোড পুনরায় ব্যবহারযোগ্য হয় এবং সহজে সম্প্রসারণ করা যায়। ওভাররাইডিংয়ের মাধ্যমে ডেরাইভড ক্লাসে বেস ক্লাসের মেথড পুনঃসংজ্ঞায়িত করা যায়, যা পলিমরফিজম নিশ্চিত করে।
মেথড ওভাররাইডিং (Method Overriding) সি শার্প (C#) এ একটি প্রক্রিয়া, যা ইনহেরিটেন্সের ক্ষেত্রে ব্যবহার করা হয়। মেথড ওভাররাইডিংয়ের মাধ্যমে বেস ক্লাসের একটি মেথডকে ডেরাইভড ক্লাসে পুনরায় সংজ্ঞায়িত করা যায়। এটি তখনই সম্ভব হয় যখন বেস ক্লাসের মেথডটিকে virtual
হিসেবে চিহ্নিত করা হয় এবং ডেরাইভড ক্লাসে সেই মেথডটিকে override
কীওয়ার্ড দিয়ে ওভাররাইড করা হয়।
virtual
কীওয়ার্ডvirtual
কীওয়ার্ড ব্যবহার করে বেস ক্লাসের একটি মেথডকে ওভাররাইডযোগ্য হিসেবে চিহ্নিত করা হয়।virtual
মেথড ডেরাইভড ক্লাসে ওভাররাইড করার জন্য প্রস্তুত থাকে, অর্থাৎ ডেরাইভড ক্লাস ঐ মেথডটিকে তার নিজস্ব পদ্ধতিতে ইমপ্লিমেন্ট করতে পারে।override
কীওয়ার্ডoverride
কীওয়ার্ড ব্যবহার করে ডেরাইভড ক্লাসে বেস ক্লাসের virtual
মেথডকে পুনরায় সংজ্ঞায়িত করা হয়।নিচে একটি উদাহরণ দেওয়া হলো, যেখানে Animal
নামের একটি বেস ক্লাস এবং Dog
নামের একটি ডেরাইভড ক্লাস তৈরি করা হয়েছে। Animal
ক্লাসের Sound
মেথডটি virtual
হিসেবে চিহ্নিত করা হয়েছে এবং Dog
ক্লাসে Sound
মেথডটি ওভাররাইড করা হয়েছে।
using System;
// বেস ক্লাস
class Animal
{
public virtual void Sound()
{
Console.WriteLine("Animals make sound");
}
}
// ডেরাইভড ক্লাস
class Dog : Animal
{
public override void Sound()
{
Console.WriteLine("Dogs bark");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Animal();
myAnimal.Sound(); // Output: Animals make sound
Dog myDog = new Dog();
myDog.Sound(); // Output: Dogs bark
// পলিমরফিজমের মাধ্যমে
Animal animalDog = new Dog();
animalDog.Sound(); // Output: Dogs bark (ওভাররাইডেড মেথড কল হবে)
}
}
Animals make sound
Dogs bark
Dogs bark
এখানে, Animal
ক্লাসের Sound
মেথডটি virtual
হিসেবে ঘোষণা করা হয়েছে এবং Dog
ক্লাসে Sound
মেথডটিকে override
করা হয়েছে। ফলে Animal
টাইপের অবজেক্ট Dog
ইনস্ট্যান্স হিসেবে ব্যবহার করলেও Dog
এর ওভাররাইড করা মেথডটি কল হবে।
নিচে Shape
নামের একটি বেস ক্লাস এবং তার দুটি ডেরাইভড ক্লাস Circle
ও Rectangle
তৈরি করা হয়েছে, যেখানে Draw
মেথডটি বিভিন্নভাবে ওভাররাইড করা হয়েছে।
using System;
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape.");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle.");
}
}
class Program
{
static void Main(string[] args)
{
Shape myShape;
myShape = new Shape();
myShape.Draw(); // Output: Drawing a shape.
myShape = new Circle();
myShape.Draw(); // Output: Drawing a circle.
myShape = new Rectangle();
myShape.Draw(); // Output: Drawing a rectangle.
}
}
Drawing a shape.
Drawing a circle.
Drawing a rectangle.
এখানে Shape
ক্লাসে Draw
মেথডটি virtual
হিসেবে ঘোষণা করা হয়েছে এবং Circle
ও Rectangle
ক্লাসে এটি override
করা হয়েছে। ফলে পলিমরফিজমের মাধ্যমে বিভিন্ন অবজেক্টে Draw
মেথড ভিন্ন ভিন্ন আউটপুট প্রদর্শন করেছে।
virtual
কীওয়ার্ড ব্যবহার করে বেস ক্লাসে মেথডকে ওভাররাইডযোগ্য হিসেবে চিহ্নিত করা হয়।override
কীওয়ার্ড ব্যবহার করে ডেরাইভড ক্লাসে বেস ক্লাসের মেথডকে নতুনভাবে ইমপ্লিমেন্ট করা হয়।পলিমরফিজম এবং abstract ক্লাস সি শার্প (C#) এর অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর গুরুত্বপূর্ণ বৈশিষ্ট্য। পলিমরফিজমের মাধ্যমে একাধিক রূপে একই কার্যাবলী প্রকাশ করা সম্ভব হয়, এবং abstract ক্লাস এমন একটি ভিত্তি প্রদান করে যার ওপর ভিত্তি করে নির্দিষ্ট বাস্তবায়ন গঠন করা যায়।
পলিমরফিজম হলো এমন একটি বৈশিষ্ট্য যা একই মেথড বা অপারেশনের বিভিন্ন রূপ প্রকাশ করতে দেয়। এটি মূলত দুটি ধরনের হতে পারে:
মেথড ওভারলোডিং হলো একই নামের মেথড একাধিকবার সংজ্ঞায়িত করা, যেখানে প্রতিটি মেথডের প্যারামিটার ভিন্ন হয়। এটি কম্পাইল টাইমে কাজ করে, তাই একে স্ট্যাটিক পলিমরফিজম বলা হয়।
public class MathOperations
{
public int Add(int a, int b)
{
return a + b;
}
public double Add(double a, double b)
{
return a + b;
}
}
মেথড ওভাররাইডিং হলো বেস ক্লাসের virtual
মেথডকে ডেরাইভড ক্লাসে override
করে পুনরায় সংজ্ঞায়িত করা। এটি রানটাইমে কাজ করে, তাই একে ডায়নামিক পলিমরফিজমও বলা হয়।
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks");
}
}
class Program
{
static void Main(string[] args)
{
Animal animal = new Animal();
animal.MakeSound(); // Output: Animal makes a sound
Animal dog = new Dog();
dog.MakeSound(); // Output: Dog barks
}
}
Abstract ক্লাস হলো এমন একটি ক্লাস যেটি আংশিক বাস্তবায়ন প্রদান করে এবং পুরোপুরি ইনস্ট্যান্টিয়েট করা যায় না। অর্থাৎ, abstract
ক্লাস থেকে সরাসরি কোনো অবজেক্ট তৈরি করা যায় না। abstract ক্লাসে এমন কিছু মেথড থাকতে পারে যেগুলোর বাস্তবায়ন নির্ধারণ করা হয় না। ডেরাইভড ক্লাসে সেই মেথডগুলোকে override
করে বাস্তবায়ন করতে হয়।
public abstract class Shape
{
public abstract double GetArea(); // Abstract method
}
public abstract class Shape
{
// Abstract method, ডেরাইভড ক্লাসে ওভাররাইড করতে হবে
public abstract double GetArea();
// Non-abstract method
public void DisplayShapeType()
{
Console.WriteLine("This is a shape.");
}
}
public class Circle : Shape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
// Overriding the abstract method
public override double GetArea()
{
return Math.PI * radius * radius;
}
}
public class Rectangle : Shape
{
private double width;
private double height;
public Rectangle(double width, double height)
{
this.width = width;
this.height = height;
}
// Overriding the abstract method
public override double GetArea()
{
return width * height;
}
}
class Program
{
static void Main(string[] args)
{
Shape circle = new Circle(5.0);
Shape rectangle = new Rectangle(4.0, 6.0);
Console.WriteLine("Circle Area: " + circle.GetArea()); // Output: Circle Area: 78.5398
Console.WriteLine("Rectangle Area: " + rectangle.GetArea()); // Output: Rectangle Area: 24
}
}
abstract
মেথড ডেরাইভড ক্লাসে override
করতে হয়।abstract
মেথডগুলোকে আলাদাভাবে বাস্তবায়ন করে।বৈশিষ্ট্য | Abstract ক্লাস | ইন্টারফেস |
---|---|---|
ইনস্ট্যান্টিয়েট করা | সরাসরি ইনস্ট্যান্টিয়েট করা যায় না | সরাসরি ইনস্ট্যান্টিয়েট করা যায় না |
মেম্বার সংজ্ঞায়িত | Abstract এবং non-abstract মেথড থাকতে পারে | শুধুমাত্র Abstract মেথড থাকতে পারে |
মাল্টিপল ইনহেরিটেন্স | একাধিক Abstract ক্লাস থেকে ইনহেরিট করা যায় না | একাধিক ইন্টারফেস থেকে ইনহেরিট করা যায় |
অ্যাক্সেস মডিফায়ার | বিভিন্ন অ্যাক্সেস মডিফায়ার থাকতে পারে | মেথড সব সময় public থাকে |
পলিমরফিজম সি শার্পে বিভিন্ন পরিস্থিতিতে একই ফাংশনালিটির বিভিন্ন রূপ প্রকাশ করতে দেয়, যা কোডের কার্যকারিতা বৃদ্ধি করে। Abstract ক্লাস এমন একটি ক্লাস যা আংশিক বাস্তবায়ন প্রদান করে এবং নির্দিষ্ট মেথডগুলোর জন্য ডেরাইভড ক্লাসে বাস্তবায়ন নিশ্চিত করে। Abstract ক্লাস এবং পলিমরফিজম একসঙ্গে ব্যবহার করে কোডের পুনরায় ব্যবহারযোগ্যতা ও গঠন উন্নত করা যায়।